package WeeklyContest.W200;

import java.util.LinkedList;
import java.util.List;

//5475. 统计好三元组
// class Solution {
//     public int countGoodTriplets(int[] arr, int a, int b, int c) {
//         int ans =0;
//         for(int i=0;i<arr.length;i++){
//             for (int j = i+1; j < arr.length; j++) {
//                 for (int k = j+1; k < arr.length; k++) {
//                    if(Math.abs(arr[i]-arr[j])<=a&&
//                     Math.abs(arr[j]-arr[k])<=b&&
//                     Math.abs(arr[i]-arr[k])<=c) ans++;
//                 }
//             }
//         }
//         return ans;
//     }
// }

//5476. 找出数组游戏的赢家
// class Solution {
//     public int getWinner(int[] arr, int k) {
//         if(k>arr.length) k =arr.length;
//         List<Integer> list = new LinkedList<>();
//         for (Integer integer : arr) {
//             list.add(integer);
//         } 
//         //开始比较
//         int nums =0;
//         int ans = 0;
//         while(nums<k){
//             int a = list.get(0);
//             int b = list.get(1);
//             int max = a>b?a:b;
//             int min = a<b?a:b;
//             int index = a<b?0:1;
//             nums = ans==max?nums+1:1;
//             ans = max;
//             list.remove(index);
//             list.add(min);
//         }  
//         return ans;
//     }
// }


public class W200{

    public static void main(String[] args) {
        Solution s = new Solution();
        int[] a = {1,2,3,4};
        int[] b = {3,4,5,6};
        s.maxSum(a, b);
    }
}


//1537. 最大得分

//dp做法n    会比较大小,不能提前取摸
class Solution {
    public int maxSum(int[] nums1, int[] nums2) {
        int mod = (int)1e9+7;
        int len1 = nums1.length;
        int len2 = nums2.length;
        long max1 = 0;  //表示走这条路能取得的最大值
        long max2 = 0;
        int i1= 0;
        int i2= 0;
        while(i1<len1&&i2<len2){
            if(nums1[i1]==nums2[i2]){
                max1 = max2 = Math.max(max1,max2)+nums1[i1];
                i1++;
                i2++;
            }
            else if( nums1[i1]<nums2[i2]){//这个时候只能走自己的路,而且小的动,追大的
                 max1 += nums1[i1++];
            }else{
                 max2 += nums2[i2++];
            }
                // max1%=mod;
                // max2%=mod;
        }
        while(i1<len1) {
            max1+=nums1[i1++];
            // max1%=mod;
        }
        while(i2<len2){ 
            max2+=nums2[i2++];
            // max2%=mod;
        }
        return (int)(Math.max(max2,max1)%mod);
    }
}